#include<stdio.h>

/**
 *  char *p;
 *  char **pp = &p;
 * 
 * 这里的p本身就是**指针变量**，在C语言中每一个变量都有自己的内存空间，对于变量做&操作，就是取得这个变量的首地址
 * 于是&p就是取p的首地址赋值给pp，*pp就是取p的首地址
 * 
 **/


int main(){
    
    char a[] = {'1','2'};

    char *p = &a;

    char **pp = &p;

    //%p：代表的是指针
    printf("%p\r\n", a);
    printf("%p\r\n", p);       //指针变量
    printf("%p\r\n", &p);      //指针变量的首地址
    printf("%p\r\n", *p);      //指针变量所指向的值


    //%c：代表的是char
    printf("%p\r\n", a[0]);    //字符1的ascii码
    printf("%c\r\n", a[0]);    //字符1
    printf("%c\r\n", *p);      //指针变量所指向的值
    printf("%c\r\n", a[1]);    //字符2
    printf("%c\r\n", *(p+1));  //指针变量所指向的值
    //对于pp的操作
    printf("%c\r\n", **pp);    //  
    printf("%c\r\n", *(*pp+1));//

    return 0;
}